<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      class Person {
        constructor() {
          console.log(1);
        }
        say() {
          console.log(3);
        }
      }
      class User extends Person {
        constructor() {
          // this.name = "jack"; // ❌
          super(); // super.constructor
          console.log(2);
          super.say();
        }
      }
      /*
        1. new User 会执行父类中的 constructor
        2. 所有的 new 操作必须执行父类中的 constructor
        3. 使用super关键字调用父类中的 constructor， constructor必须省略不写，其他方法不行
        4. 子类中的this必须在super调用后才能访问（赋值）
      */
      const u = new User();
    </script>
  </body>
</html>
